home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / hack / PDFAQ.ZIP / transfer.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-08  |  1.2 KB  |  50 lines

  1. // transfer.c - by Permssion Denied
  2. // short program to get/put data streams from some opened port
  3. // part of Prisioner of Gates System project
  4.  
  5. #include <stdio.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8. #include <netdb.h>
  9. #include <stdlib.h>
  10. #include <fcntl.h>
  11. #include <sys/stat.h>
  12.  
  13. int main (int argc, char **argv)
  14. {
  15.  struct sockaddr_in sin;
  16.  int sock;
  17.  char c;
  18.  struct hostent *phe;
  19.  int f;
  20.  
  21.  if(argc<4) {
  22.   printf("%s <p|g> <ip> <port> (<name>)\n", argv[0]);return;
  23.   }
  24.  bzero((char *) &sin, sizeof(sin));
  25.  sin.sin_family = AF_INET;
  26.  sin.sin_port = htons(atoi(argv[3]));
  27.  if (phe = gethostbyname (argv[2]))
  28.   bcopy(phe -> h_addr, (char *) &sin.sin_addr, phe -> h_length);
  29.   else
  30.   {
  31.    fprintf(stderr, "No host\n");return;
  32.   }
  33.  if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))<0) {
  34.   fprintf(stderr, "No free socket\n");return;
  35.   }
  36.  if (connect(sock, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
  37.   fprintf(stderr, "No connect\n"); return;
  38.   }
  39.  if (strcmp(argv[1], "g")==0) 
  40.   while(read(sock, &c, 1)>0) printf("%c", c);
  41.   else {
  42.   if((f = open(argv[4], O_RDONLY, S_IREAD)) == -1) {
  43.    fprintf(stderr, "No file\n"); return;
  44.    }
  45.   while(read(f, &c, 1)>0) write(sock, &c, 1);
  46.   close(f);
  47.   }
  48.  printf("%d\n", errno);
  49.  close(sock);
  50.  }